package com.yan_jiu_sheng.LeetCodeHot100.AC;

import java.util.Arrays;
import java.util.LinkedList;

/**
 * https://leetcode.cn/problems/daily-temperatures/description/?envType=study-plan-v2&envId=top-100-liked
 * 参考题解，单调栈实现
 * @author yulongTian
 * @create 2024-07-10 17:55
 */
public class Test70 {
    public static void main(String[] args) {
        int[] T = {73, 74, 75, 71, 69, 72, 76, 73};
        System.out.println(Arrays.toString(new Test70().dailyTemperatures(T)));
    }

    /*
    提示：如果今天的温度是70，那么未来的温度必须是71,72,73，... ，99，或者100。
    我们可以记住它们下一次发生的时间。
     */
    public int[] dailyTemperatures(int[] T) {
        LinkedList<Integer> stack = new LinkedList<>();
        int[] res = new int[T.length];
        int index = -1;
        for (int t : T) {
            index++;
            while (!stack.isEmpty() && T[stack.peek()] < t) {
                int curIndex = stack.pop();
                res[curIndex] = index - curIndex;
            }
            stack.push(index);
        }
        return res;
    }


}
